/**
 *  Created on: Dec 28, 2012
 *      Author: filipe mutz
 */

#include <cmath>
#include <iostream>
#include <string>

using namespace std;

class Point
{
	public:

		double x, y;

		Point(double coord_x, double coord_y)
		{
			x = coord_x;
			y = coord_y;
		}

		~Point()
		{
		}
};


/**
 * TODO: verificar se esse public abre algum
 * buraco na engenharia de software
 */

class InformationalPoint:public Point
{
	public:

		string description;

		InformationalPoint(double coord_x, double coord_y, string point_description):Point(coord_x, coord_y)
		{
			description = point_description;
		}

		~InformationalPoint()
		{
		}
};


double dist(Point a, Point b)
{
	return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}


int
main(void)
{
	Point a(0, 0), b(1, 0);
	InformationalPoint ia(0, 0, "origem"), ib(1, 0, "destino");

	cout << "dist with points: " << dist(a, b) << endl;
	cout << "dist with information points: " << dist(ia, ib) << endl;

	cout << "Terminou!" << endl;
	return 0;
}
